/*
 * code.h
 *
 * $Revision: 1.4 $
 */

#ifndef __CODE_H__
#define __CODE_H__

#define CODE_EOM	(0x1a)	/* 曲終端 */
#define CODE_WAIT	(0x20)	/* 指定時間待つ */
#define CODE_PROG	(0xc0)	/* 音色切り替え */
#define CODE_NOTE	(0x90)	/* ノート番号キーオン */
#define CODE_KEYOFF	(0x80)	/* キーオフする */
#define CODE_TEMPO	(0x30)	/* テンポを設定する */
#define CODE_VOLUME	(0xb0)	/* メイン音量 */
#define CODE_CHVOL	(0xb7)	/* チャンネル音量 */
#define CODE_PANVOL	(0xba)	/* LR 音量 */
#define CODE_REGWR	(0x10)	/* レジスタ書き込み(下位ニブルがレジスタ) */
#define CODE_INFLOOP	(0xdc)	/* 無限ループ */

#define LINEBUFSIZ	(1024)	/* 行入力バッファ容量 */
#define TRACKBUFSIZ	(1024 * 64) /* トラックバッファ容量 */
#define TRACK_MIN	(0)
#define TRACK_MAX	(5)
#define MAXTRACK	(TRACK_MAX + 1)

#define ONECLOCK	(1431818)
#define TIMEBASE	(192)
#define TEMPOBASE	(ONECLOCK * 60)
#define NOTE_MIN	(24)
#define NOTE_MAX	(108)

#define VOLUME(l,r)	(((l) << 4) | ((r) & 0x0f))
#define PANVOL(l,r)	(((l) << 4) | ((r) & 0x0f))

#define PROG_MIN	(0)
#define PROG_MAX	(127)
#define DEFAULT_TEMPO	(120)
#define TEMPO_MIN	(30)
#define TEMPO_MAX	(300)
#define DEFAULT_OCTAVE	(4)
#define OCTAVE_MIN	(1)
#define OCTAVE_MAX	(8)
#define DEFAULT_VOLUME	(12)
#define VOLUME_MIN	(0)
#define VOLUME_MAX	(15)
#define DEFAULT_CHVOL	(31)
#define CHVOL_MIN	(0)
#define CHVOL_MAX	(31)
#define DEFAULT_PANVOL	(15)
#define DEFAULT_NOTELEN (4)
#define NOTELEN_MIN	(1)
#define NOTELEN_MAX	(256)
#define DEFAULT_QUANT	(8)
#define QUANT_MIN	(1)
#define QUANT_MAX	(8)
#define REGWR_MIN	(0)
#define REGWR_MAX	(9)
#define REGVAL_MIN	(0)
#define REGVAL_MAX	(255)

#endif /* __CODE_H__ */
